布尔类型(bool)¶
布尔类型其实就是数字0和1的变种而来,即 真(True/1)
或
假(False/0)
,实际上就是内置的数字类型的子类而已。
集合(set)¶
集合的元素是不允许重复、不可变且无序的。
主要作用:
- 去重, 把一个列表变成集合,就自动去重了
- 关系测试, 测试两组数据之间的交集, 差集, 并集等关系
创建集合
>>> s = set([11,22,33])
>>> s
{33, 11, 22}
>>> type(s)
<class 'set'>
第二种不常用创建集合的方式
>>> s = {11,22,33}
>>> type(s)
<class 'set'>
>>> s
{33, 11, 22}
把其它可迭代的数据类型转换为set集合
>>> li = ["a","b","c"]
>>> se = set(li)
>>> se
{'a', 'b', 'c'}
>>> type(se)
<class 'set'>
>>>
集合同样支持表达式操作符
>>> x = set('abcde')
>>> y = set('bdxyz')
>>> x
{'d', 'a', 'b', 'c', 'e'}
>>> y
{'z', 'x', 'b', 'd', 'y'}
使用in进行成员检查
>>> 'a' in x
True
差集, 项在x中,但不在y中
>>> x - y
{'a', 'e', 'c'}
并集
>>> x | y
{'y', 'e', 'd', 'c', 'b', 'x', 'a', 'z'}
交集
>>> x & y
{'b', 'd'}
对称差集,项在x或y中, 但不会同时出现在二者中
>>> x ^ y
{'y', 'e', 'c', 'x', 'a', 'z'}
比较
>>> x > y
False
>>> x < y
False
>>> x > y , x < y
(False, False)
集合解析
>>> {x for x in 'abc'}
{'a', 'b', 'c'}
>>> {x+'b' for x in 'abc'}
{'ab', 'bb', 'cb'}
集合所提供的方法¶
copy浅拷贝¶
var = se.copy()
# 返回集合的浅copy
difference,差集¶
集合var1
中存在,var2
中不存在的元素
>>> var1 = {11,22,33}
>>> var2 = {22,55}
>>> var1.difference(var2)
{33, 11}
>>> var2.difference(var1)
{55}
difference_update¶
寻找集合var1中存在,var2中不存在的元素,并把查找出来的元素重新赋值给var1
>>> var1
{33, 11, 22}
>>> var2
{22, 55}
>>> var1.difference_update(var2)
>>> var1
{33, 11}
discard¶
移除指定元素,不存在不报错
>>> var1 = {11,22,33}
>>> var1.discard(11)
>>> var1
{33, 22}
>>> var1.discard(112111)
>>> var1
{33, 22}
remove¶
移除指定元素,不存在报错
>>> var1 = {11,22,33}
>>> var1
{33, 11, 22}
>>> var1.remove(11)
>>> var1
{33, 22}
>>> var1.remove(asdf)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'asdf' is not defined
intersection,交集¶
交集,查找元素中都存在的值
>>> var1 = {11,22,33}
>>> var2 = {22,55,77}
>>> var1.intersection(var2)
{22}
intersection_update¶
取交集并更新到var1中
>>> var1 = {11,22,33}
>>> var2 = {22,55,77}
>>> var1.intersection_update(var2)
>>> var1
{22}
isdisjoint¶
判断有没有交集,如果有返回False,否则返回True
>>> var1 = {11,22,33}
>>> var2 = {22,55,77}
>>> var1.isdisjoint(var2)
False
>>> var2 = {66,44,55}
>>> var1.isdisjoint(var2)
True
issubset¶
是否是子序列,也就是说如果var2的所有元素都被var1所包含,那么var2就是var1的子序列
>>> var1 = {11,22,33,44}
>>> var2 = {11,22}
>>> var2.issubset(var1)
True
issuperset¶
是否是父序列
>>> var1 = {11,22,33}
>>> var2 = {22,44,55}
>>> var1.issuperset(var2)
False
>>> var2 = {11,22}
>>> var1.issuperset(var2)
True
pop¶
移除一个元素,并显示移除的元素,移除时是无序的
>>> var1 = {11,22,33,44}
>>> var1.pop()
33
>>> var1
{11, 44, 22}
>>> var1.pop()
11
>>> var1
{44, 22}
symmetric_difference¶
对称交集,把var1存在且var2不存在和var2存在且var1不存在的元素合在一起
>>> var1 = {11,22,33,44}
>>> var2 = {11,55,66,44}
>>> var1.symmetric_difference(var2)
{33, 66, 22, 55}
symmetric_difference_update¶
对称交集,并更新到var1中
>>> var1 = {11,22,33,44}
>>> var2 = {11,55,66,44}
>>> var1
{33, 11, 44, 22}
>>> var1.symmetric_difference_update(var2)
>>> var1
{33, 66, 22, 55}
union,并集¶
并集,把两个集合中的所有元素放在一起,如果有重复的则只存放一个
>>> var1 = {11,22,33,44}
>>> var2 = {11,55,66,44}
>>> var1.union(var2)
{33, 66, 11, 44, 22, 55}
update¶
更新,把一个集合中的元素更新到另一个集合中
>>> var1 = {11,22,33,44}
>>> var2 = {11,55,66,44}
>>> var1.update(var2)
>>> var1
{33, 66, 11, 44, 22, 55}